package beans;

import dao.ReservaDAO;
import dao.ReservaDAOHibernate;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import modelo.Reserva;
import modelo.Usuario;

@Named(value = "reservaBean")
@RequestScoped
public class reservaBean {

    private List<Reserva> lista;
    private Reserva reservaSelecionada;

    public reservaBean() {
        this.lista = new ArrayList<Reserva>();
        this.reservaSelecionada = new Reserva();
    }

    public List<Reserva> getLista() {
        ReservaDAO reservaDAO = new ReservaDAOHibernate();
        this.lista = reservaDAO.listar();
        return lista;
    }

    public Reserva getReservaSelecionada() {
        return reservaSelecionada;
    }

    public void setReservaSelecionada(Reserva reservaSelecionada) {
        this.reservaSelecionada = reservaSelecionada;
    }

    public void btnCriarReserva(ActionEvent actionEvent) {
        ReservaDAO reservaDAO = new ReservaDAOHibernate();
        String msg;
        Usuario usuario = (Usuario) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
        this.reservaSelecionada.setUsuario(usuario);
        if (reservaDAO.criar(this.reservaSelecionada)) {
            msg = "A reserva do recurso " + this.reservaSelecionada.getRecurso().getNome()
                    + " foi criada com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao criar o registro de reserva.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnAlterarReserva(ActionEvent actionEvent) {
        ReservaDAO reservaDAO = new ReservaDAOHibernate();
        String msg;
        if (reservaDAO.alterar(this.reservaSelecionada)) {
            msg = "A reserva do recurso " + this.reservaSelecionada.getRecurso().getNome()
                    + " foi alterada com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao alterar o registro de reserva.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    public void btnExcluirReserva(ActionEvent actionEvent) {
        ReservaDAO reservaDAO = new ReservaDAOHibernate();
        String msg;
        if (reservaDAO.excluir(this.reservaSelecionada)) {
            msg = "A reserva do recurso foi excluída com sucesso.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        } else {
            msg = "Erro ao excluir o registro de reserva.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

}
